package com.bs.areport.sys;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Random;

import javax.imageio.ImageIO;

public class GenCodeImg {
	private String code;
	private Color getRandColor(int fc,int bc){//��Χ��������ɫ
        Random random = new Random();
        if(fc>255) fc=255;
        if(bc>255) bc=255;
        int r=fc+random.nextInt(bc-fc);
        int g=fc+random.nextInt(bc-fc);
        int b=fc+random.nextInt(bc-fc);
        return new Color(r,g,b);
    }
	public ByteArrayInputStream getImg(){
		// ���ڴ��д���ͼ��
		int width=70, height=31;
		BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

		// ��ȡͼ��������
		Graphics g = image.getGraphics();

		//��������
		Random random = new Random();

		// �趨����ɫ
		g.setColor(getRandColor(200,250));
		g.fillRect(0, 0, width-1, height-1);

		//�趨����
		g.setFont(new Font("Bookman Old Style",Font.PLAIN,18));

		//���߿�
		//g.setColor(new Color());
		//g.drawRect(0,0,width-1,height-1);

		// ������155�������ߣ�ʹͼ���е���֤�벻�ױ��������̽�⵽
		g.setColor(getRandColor(168,200));
		for (int i=0;i<200;i++)
		{
		 int x = random.nextInt(width);
		 int y = random.nextInt(height);
		 int xl = random.nextInt(12);
		 int yl = random.nextInt(12);
		 g.drawLine(x,y,x+xl,y+yl);
		}

		// ȡ���������֤��(4λ����)
		String sRand="";
		for (int i=0;i<4;i++){
		    String rand=String.valueOf(random.nextInt(10));
		    sRand+=rand;
		    // ����֤����ʾ��ͼ����
		    g.setColor(new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));//���ú����������ɫ��ͬ����������Ϊ����̫�ӽ�����ֻ��ֱ�����
		    g.drawString(rand,13*i+6,16);
		}

		for (int i=0;i<5;i++)
		{
		 g.setColor(getRandColor(110,200));
		 int x = random.nextInt(width-4);
		 int y = random.nextInt(height-4);
		 int xl = random.nextInt(width-4);
		 int yl = random.nextInt(height-4);
		 g.drawLine(x,y,x+xl,y+yl);
		}

		//g.setColor(new Color());
		g.drawRect(0,0,width,height);
		
		ByteArrayOutputStream os=new ByteArrayOutputStream();
		ByteArrayInputStream in =null;
		try {
			ImageIO.write(image, "GIF", os);
			in = new ByteArrayInputStream(os.toByteArray());//ת��Ϊ��������
		} catch (IOException e) {
			e.printStackTrace();
		} finally{
			try {
				os.flush();
				os.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		this.setCode(sRand);
		return in;
	}
	public void setCode(String code) {
		this.code = code;
	}
	public String getCode() {
		return code;
	}

}
